অ্যাপাচি নিফাই (Apache NiFi) ডেটা ফ্লো ম্যানেজমেন্টের জন্য একটি শক্তিশালী প্ল্যাটফর্ম, যেখানে ডেটার বিভিন্ন অংশ, যেমন FlowFile এবং তার Attributes এবং Content ব্যবস্থাপনা গুরুত্বপূর্ণ ভূমিকা পালন করে। এই দুটি উপাদান (Attributes এবং Content) নিফাই এর ডেটা প্রসেসিং এবং ট্রান্সফরমেশন ফ্লোতে কেন্দ্রীয় ভূমিকা পালন করে।
NiFi FlowFile
FlowFile হল নিফাই-এর একটি মৌলিক কনসেপ্ট যা ডেটার একটি একক ইউনিটকে উপস্থাপন করে। একটি FlowFile দুটি অংশে বিভক্ত থাকে: Attributes এবং Content।
FlowFile এর গঠন
- Attributes: এটি FlowFile এর মেটাডেটা ধারণ করে যা ডেটার অতিরিক্ত তথ্য প্রদান করে। যেমন ডেটার উৎস, আকার, টাইমস্ট্যাম্প, ফাইলের নাম ইত্যাদি।
- Content: এটি FlowFile এর আসল ডেটা বা কনটেন্ট। এটি হতে পারে একটি ফাইল, একটি JSON বা XML ডেটা, একটি ডাটাবেস রেকর্ড, বা অন্য কোন ডেটা যা প্রসেস করা হচ্ছে।
FlowFile Attributes
Attributes হল FlowFile এর মেটাডেটা, যা মূল ডেটার (Content) পাশাপাশি পরিচালিত হয়। Attributes মূলত ডেটা সম্পর্কিত অতিরিক্ত তথ্য ধারণ করে যা প্রসেসরগুলোর জন্য দরকারী। এগুলি সাধারণত মূল ডেটা (Content) প্রসেসিংয়ের পাশাপাশি ব্যবহৃত হয় এবং ফ্লোতে সিদ্ধান্ত নেওয়ার জন্য সাহায্য করতে পারে।
কিছু উদাহরণ:
- filename: ফাইলের নাম
- fileSize: ফাইলের আকার (বাইটে)
- mime.type: ফাইলের MIME টাইপ (যেমন, text/plain, application/json)
- path: ফাইলের পূর্ণ পথ
- UUID: FlowFile এর ইউনিক আইডি
নিফাই-এ, Attributes ব্যবহার করে বিভিন্ন ধরনের কনফিগারেশন এবং কন্ডিশনাল প্রসেসিং করা যেতে পারে। যেমন একটি প্রসেসরের মাধ্যমে ডেটার ফরম্যাট নির্ধারণ করতে পারা বা কোনো ফাইল যদি একটি নির্দিষ্ট আকারের হয় তবে সেটি অন্য কোনো প্রসেসরের কাছে প্রেরণ করা।
Attributes ব্যবহারের সুবিধা
- ফিল্টারিং: একটি প্রসেসরের মাধ্যমে নির্দিষ্ট অ্যাট্রিবিউটের ভিত্তিতে ডেটা ফিল্টার করা যায়।
- ডেটা রুটিং: ডেটা এর অ্যাট্রিবিউটের উপর ভিত্তি করে বিভিন্ন গন্তব্যে রুট করা যায়।
- প্রসেসিং কন্ডিশন: প্রসেসিংয়ের সময় কন্ডিশনাল ফ্লো তৈরি করা সম্ভব, যেমন কিছু অ্যাট্রিবিউটের মান অনুযায়ী ডেটা সেভ করা বা প্রক্রিয়া করা।
অ্যাট্রিবিউট আপডেট করা
নিফাই-এ UpdateAttribute প্রসেসর ব্যবহার করে একটি FlowFile এর অ্যাট্রিবিউট আপডেট করা যেতে পারে। উদাহরণস্বরূপ, একটি ফাইলের নাম বা মেটাডেটা পরিবর্তন করতে।
UpdateAttribute:
- Add new attribute: "filename" = "new_filename.csv"
Content Management
Content হচ্ছে FlowFile এর মূল ডেটা, যা ফাইল, ডাটাবেস রেকর্ড, JSON ডেটা বা অন্য কোন কনটেন্ট হতে পারে। নিফাই-এ Content এর ব্যবস্থাপনা এবং প্রসেসিং অত্যন্ত গুরুত্বপূর্ণ কারণ এটি প্রকৃত ডেটা যা বিভিন্ন প্রসেসর দ্বারা পরিবর্তিত বা রূপান্তরিত হতে পারে।
Content এর ধরন
Content নিফাই-এ বিভিন্ন ফরম্যাটে থাকতে পারে, যেমন:
- Text Data: সাধারণ টেক্সট, JSON, CSV, XML, বা অন্যান্য ফরম্যাট
- Binary Data: ইমেজ, অডিও বা ভিডিও ফাইল
- Structured Data: যেমন ডাটাবেস রেকর্ড (JSON, Avro, Parquet ফরম্যাটে)
Content ব্যবহার
নিফাই-এ Content সাধারণত Streamed হয়, অর্থাৎ একযোগভাবে মেমোরিতে লোড না করে এটি ধারাবাহিকভাবে প্রসেস করা হয়। এটি খুবই কার্যকরী, বিশেষ করে বড় ফাইল বা বড় ডেটা সেটের জন্য, কারণ মেমোরি ব্যবহারের অপ্টিমাইজেশন হয় এবং পারফরম্যান্স বজায় থাকে।
Content প্রসেসিং
Content প্রসেস করার জন্য নিফাই এর বিভিন্ন প্রসেসর ব্যবহার করা হয়, যেমন:
- ReplaceText: টেক্সট ডেটার মধ্যে কিছুর পরিবর্তন করা।
- ExtractText: একটি নির্দিষ্ট টেক্সট অংশের এক্সট্রাকশন করা।
- EvaluateJsonPath: JSON ডেটা থেকে তথ্য বের করা।
- CompressContent: কনটেন্ট কমপ্রেস করা (যেমন gzip, bzip2 ইত্যাদি)।
FlowFile Attributes এবং Content এর মধ্যে পার্থক্য
| উপাদান | FlowFile Attribute | Content |
|---|---|---|
| গঠন | মেটাডেটা (Metadata) | আসল ডেটা (Data) |
| ব্যবহার | ডেটার অতিরিক্ত তথ্য, যা ফ্লো রুটিং বা প্রসেসিং এ সাহায্য করে | ডেটার প্রকৃত অংশ, যা পরিবর্তন বা রূপান্তরিত হয় |
| স্টোরেজ | ছোট, সাধারণত মেমোরিতে থাকে | বড়, ডিস্ক বা মেমোরি স্তরে থাকে |
| পরিবর্তন | সহজে পরিবর্তনযোগ্য এবং আপডেটযোগ্য | পরিবর্তন বা রূপান্তর করতে প্রসেসর ব্যবহার করা হয় |
সারাংশ
অ্যাপাচি নিফাই-এ FlowFile Attributes এবং Content Management অত্যন্ত গুরুত্বপূর্ণ। Attributes ডেটার অতিরিক্ত তথ্য ধারণ করে যা ডেটা রুটিং, ফিল্টারিং এবং প্রসেসিংয়ের জন্য ব্যবহৃত হয়, আর Content হচ্ছে মূল ডেটা যা বিভিন্ন প্রসেসর দ্বারা প্রক্রিয়া বা রূপান্তরিত হয়। নিফাই-এ Content এবং Attributes ব্যবস্থাপনা একটি ডেটা ফ্লো ম্যানেজমেন্ট সিস্টেমের কার্যকারিতা এবং স্কেলেবিলিটি নিশ্চিত করে, যা বৃহৎ ডেটা সেট এবং বিভিন্ন সিস্টেমের সাথে ইন্টিগ্রেশনের জন্য উপযুক্ত।
অ্যাপাচি নিফাই (Apache NiFi) একটি ডেটা ফ্লো ম্যানেজমেন্ট টুল, যা ডেটা সংগ্রহ, প্রক্রিয়া এবং প্রেরণের জন্য ব্যবহৃত হয়। NiFi এ FlowFile হল ডেটার একক ইউনিট, যা প্রসেসরের মাধ্যমে প্রবাহিত হয়। FlowFile Attributes হল সেই মেটাডেটা যা FlowFile এর সাথে যুক্ত থাকে এবং FlowFile এর সাথে সম্পর্কিত বিভিন্ন তথ্য ধারণ করে। এই অ্যাট্রিবিউটগুলো FlowFile এর প্রক্রিয়াকরণে গুরুত্বপূর্ণ ভূমিকা পালন করে এবং NiFi এর মাধ্যমে ডেটা ম্যানিপুলেশন এবং রাউটিং প্রক্রিয়ায় সাহায্য করে।
FlowFile Attributes এর ভূমিকা
প্রতিটি FlowFile এর সাথে একটি বা একাধিক attributes থাকে, যা FlowFile এর মেটাডেটা হিসেবে কাজ করে। এই অ্যাট্রিবিউটগুলো কনটেন্ট (ফাইল বা ডেটা) সম্পর্কিত তথ্য প্রদান করে, যেমন ফাইলের নাম, আকার, টাইপ, সৃষ্টির সময়, এবং অন্যান্য গুরুত্বপূর্ণ বৈশিষ্ট্য। এগুলি মূলত FlowFile এর প্রসেসিং এবং রাউটিং সিদ্ধান্ত নেয়ার জন্য ব্যবহৃত হয়।
FlowFile Attributes এর ব্যবহার
- রাউটিং: NiFi এর বিভিন্ন প্রসেসর, যেমন
RouteOnAttribute, FlowFile এর অ্যাট্রিবিউট দেখে সিদ্ধান্ত নেয় কোন রুটে FlowFile পাঠানো হবে। - ডেটা ফিল্টারিং: FlowFile এর অ্যাট্রিবিউটের মাধ্যমে নির্দিষ্ট শর্ত বা ফিল্টার প্রয়োগ করা যায়, যেমন ফাইলের সাইজ বা টাইপের উপর ভিত্তি করে ফাইল নির্বাচন করা।
- ডেটা ট্রান্সফরমেশন: FlowFile এর অ্যাট্রিবিউট ব্যবহার করে ডেটার রূপান্তর বা পরিবর্তন করা যায়, যেমন ফাইলের নাম বা টাইপ পরিবর্তন করা।
- ডেটা মনিটরিং: NiFi এ অ্যাট্রিবিউটের মাধ্যমে আপনি ডেটা প্রবাহের উপর নজর রাখতে পারেন এবং প্রয়োজনে অ্যাট্রিবিউটের মান পরিবর্তন করে ডেটা ট্র্যাকিং করতে পারেন।
FlowFile Attributes এর উদাহরণ
প্রতিটি FlowFile একটি বা একাধিক অ্যাট্রিবিউট ধারণ করে, এবং এই অ্যাট্রিবিউটগুলো FlowFile এর সাথে সম্পর্কিত বিভিন্ন তথ্য প্রদান করে। কিছু সাধারণ FlowFile অ্যাট্রিবিউট এর উদাহরণ:
- filename: ফাইলের নাম
- fileSize: ফাইলের আকার (বাইটে)
- path: ফাইলের পূর্ণ পাথ
- mime.type: ফাইলের MIME টাইপ (যেমন
application/json,text/plain) - uuid: FlowFile এর ইউনিক আইডেন্টিফায়ার
- creationTime: FlowFile তৈরি হওয়ার সময়
- lastModified: ফাইলের শেষ পরিবর্তন সময়
উদাহরণ
ধরা যাক, আপনি একটি ফাইল প্রসেস করছেন এবং তার অ্যাট্রিবিউটগুলি ব্যবহার করে একটি সিদ্ধান্ত নিচ্ছেন:
filename: example.txt
fileSize: 2048
path: /user/data/example.txt
mime.type: text/plain
এখানে filename, fileSize, path, এবং mime.type অ্যাট্রিবিউটগুলি ফাইল সম্পর্কিত তথ্য প্রদান করে এবং NiFi তে সেগুলোর ভিত্তিতে ডেটা প্রসেসিং করা যাবে।
FlowFile Attributes পরিচালনা
NiFi তে FlowFile Attributes বিভিন্ন প্রসেসরের মাধ্যমে পরিবর্তন বা পরিচালনা করা যেতে পারে। কিছু প্রসেসর, যেমন UpdateAttribute এবং RouteOnAttribute, FlowFile এর অ্যাট্রিবিউটগুলোর উপর ভিত্তি করে সিদ্ধান্ত নেয় এবং তাদের মান পরিবর্তন করতে সাহায্য করে।
UpdateAttribute Processor
UpdateAttribute প্রসেসরটি FlowFile এর অ্যাট্রিবিউটগুলোর মান পরিবর্তন বা নতুন অ্যাট্রিবিউট যোগ করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনি যদি একটি ফাইলের নাম পরিবর্তন করতে চান, তাহলে আপনি এই প্রসেসরটি ব্যবহার করতে পারেন।
RouteOnAttribute Processor
RouteOnAttribute প্রসেসরটি FlowFile এর অ্যাট্রিবিউটের মানের উপর ভিত্তি করে ডেটা রাউট করে। উদাহরণস্বরূপ, আপনি যদি শুধু JSON ফাইল প্রসেস করতে চান, তবে mime.type অ্যাট্রিবিউটটি চেক করতে পারেন।
সারাংশ
FlowFile Attributes হল সেই মেটাডেটা যা FlowFile এর সাথে যুক্ত থাকে এবং এর মাধ্যমে ডেটার উপর বিভিন্ন কার্যক্রম পরিচালনা করা যায়। NiFi তে FlowFile এর অ্যাট্রিবিউটগুলি ডেটা রাউটিং, ফিল্টারিং, এবং ট্রান্সফরমেশনের জন্য ব্যবহৃত হয়। এই অ্যাট্রিবিউটগুলির মাধ্যমে NiFi তে ডেটা ফ্লো ম্যানেজমেন্ট আরও কার্যকরী এবং নমনীয় হয়ে ওঠে। বিভিন্ন প্রসেসর ব্যবহার করে অ্যাট্রিবিউটগুলোর মান পরিবর্তন এবং সেগুলির ভিত্তিতে ডেটা প্রসেসিং করা যায়।
অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ফ্লো ব্যবস্থাপনা প্ল্যাটফর্ম যা ডেটার প্রক্রিয়া এবং স্থানান্তরের জন্য ব্যবহৃত হয়। NiFi-তে Attribute Modification Processors ব্যবহার করে ডেটার attributes (অথবা মেটাডেটা) পরিবর্তন করা যায়, যা ডেটার সাথে সম্পর্কিত অতিরিক্ত তথ্য যেমন ফাইল নাম, টাইপ, সাইজ, সময় ইত্যাদি। এই প্রোসেসরগুলি ডেটার কন্টেন্ট বা ফরম্যাট পরিবর্তন না করে শুধুমাত্র এর মেটাডেটা (attributes) পরিবর্তন করতে ব্যবহৃত হয়।
এই প্রোসেসরগুলির মধ্যে দুটি গুরুত্বপূর্ণ প্রোসেসর হল: UpdateAttribute এবং ReplaceText।
UpdateAttribute প্রোসেসর
UpdateAttribute কি?
UpdateAttribute প্রোসেসরটি NiFi-তে একটি শক্তিশালী টুল যা FlowFile-এর attributes পরিবর্তন করতে ব্যবহৃত হয়। আপনি এটি ব্যবহার করে FlowFile-এর মেটাডেটা (যেমন নাম, টাইপ, সময়, এবং অন্যান্য কাস্টম অ্যাট্রিবিউট) আপডেট করতে পারেন।
ব্যবহার কিভাবে করবেন?
এটি সাধারণত তখন ব্যবহার করা হয় যখন আপনি FlowFile-এর attributes অনুযায়ী পরবর্তী প্রোসেসর বা ডেটাবেসের জন্য কিছু কাস্টম মেটাডেটা তৈরি করতে চান। উদাহরণস্বরূপ, ফাইলের নাম পরিবর্তন করা, টাইমস্ট্যাম্প অ্যাড করা, বা কোন নির্দিষ্ট attribute ভিত্তিক কন্ডিশন তৈরি করা।
কনফিগারেশন:
- Attributes to Update: আপনি যে অ্যাট্রিবিউটগুলো আপডেট করতে চান, সেগুলি এখানে উল্লেখ করতে হবে। যেমন
filename,mime.type,last_modifiedইত্যাদি। - Value to Set: এখানে আপনি নতুন ভ্যালু উল্লেখ করতে পারবেন। এটা কাস্টম ভ্যালু অথবা NiFi-এর Expression Language ব্যবহার করতে পারে, যেমন
${filename:toLower()}(ফাইলনেমকে লোয়ারকেসে কনভার্ট করা)। - Add or Replace: এখানে আপনি সিদ্ধান্ত নিতে পারবেন অ্যাট্রিবিউটটি নতুনভাবে যোগ করবেন নাকি পূর্বের মান প্রতিস্থাপন করবেন।
উদাহরণ:
- ফাইলের নামের শেষে টাইমস্ট্যাম্প যোগ করা:
- Attribute:
filename - Value to Set:
${filename}-${now()}(ফাইল নামের সাথে বর্তমান সময়ের টাইমস্ট্যাম্প যুক্ত হবে)
- Attribute:
- ফাইলের টাইপ পরিবর্তন করা:
- Attribute:
mime.type - Value to Set:
application/json(এটি FlowFile-এর MIME টাইপ পরিবর্তন করবে)
- Attribute:
ReplaceText প্রোসেসর
ReplaceText কি?
ReplaceText প্রোসেসরটি FlowFile-এর কন্টেন্টের মধ্যে টেক্সট পরিবর্তন করতে ব্যবহৃত হয়। এটি সাধারণত ডেটার মধ্যে নির্দিষ্ট টেক্সট বা প্যাটার্ন খুঁজে বের করে এবং সেটি পরিবর্তন করার জন্য ব্যবহার করা হয়। আপনি এটি ব্যবহার করে ডেটার কন্টেন্টের কোনো অংশের পরিবর্তন, প্রক্রিয়াকরণ বা পুনরাবৃত্তি করতে পারেন।
ব্যবহার কিভাবে করবেন?
এটি সাধারণত তখন ব্যবহৃত হয় যখন আপনাকে FlowFile-এর কন্টেন্টের মধ্যে কোনো নির্দিষ্ট টেক্সট অনুসন্ধান করে সেটি প্রতিস্থাপন করতে হয়। উদাহরণস্বরূপ, একটি ফাইলের মধ্যে কিছু নির্দিষ্ট শব্দ খুঁজে বের করা এবং তা অন্য শব্দে প্রতিস্থাপন করা।
কনফিগারেশন:
- Search Value: এখানে আপনি যে টেক্সট বা রেগুলার এক্সপ্রেশন খুঁজে পেতে চান তা উল্লেখ করবেন। উদাহরণস্বরূপ,
{{old_value}}। - Replacement Value: এখানে আপনি সেই টেক্সট বা প্যাটার্নটি প্রতিস্থাপন করবেন। উদাহরণস্বরূপ,
{{new_value}}। - Replacement Strategy: এটি নির্ধারণ করবে কিভাবে প্রতিস্থাপন হবে (যেমন, "Literal Value", "Regular Expression", ইত্যাদি)।
উদাহরণ:
একটি নির্দিষ্ট শব্দ প্রতিস্থাপন:
- Search Value:
{{old_value}} - Replacement Value:
{{new_value}}
এটি FlowFile-এর কন্টেন্টে
old_valueখুঁজে পাবে এবং সেটিnew_valueদিয়ে প্রতিস্থাপন করবে।- Search Value:
JSON ডেটার মধ্যে কীগুলোর নাম পরিবর্তন:
- Search Value:
"name": ".*" - Replacement Value:
"full_name": "$1"
এটি JSON কন্টেন্টের মধ্যে
"name"কীগুলোর নাম"full_name"এ পরিবর্তন করবে।- Search Value:
UpdateAttribute এবং ReplaceText এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | UpdateAttribute | ReplaceText |
|---|---|---|
| কাজের ধরন | FlowFile-এর মেটাডেটা বা attributes পরিবর্তন | FlowFile-এর কন্টেন্টের মধ্যে টেক্সট বা প্যাটার্ন প্রতিস্থাপন |
| প্রতিস্থাপন করা হয় | শুধুমাত্র attributes বা মেটাডেটা | কন্টেন্টের টেক্সট (যেমন ফাইলের ভ্যালু বা ডেটা) |
| ব্যবহার | FlowFile-এর নাম, টাইপ, সময় বা কাস্টম attribute পরিবর্তন | কন্টেন্টের মধ্যে নির্দিষ্ট শব্দ বা প্যাটার্ন প্রতিস্থাপন |
| ভ্যালু | Expression Language বা কাস্টম ভ্যালু নির্ধারণ করা যায় | রেগুলার এক্সপ্রেশন বা নির্দিষ্ট টেক্সট ব্যবহার করা যায় |
সারাংশ
অ্যাপাচি নিফাই (Apache NiFi)-তে Attribute Modification Processors ব্যবহার করে আপনি FlowFile-এর attributes বা মেটাডেটা পরিবর্তন করতে পারেন। UpdateAttribute প্রোসেসরটি FlowFile-এর attributes পরিবর্তন করতে ব্যবহৃত হয়, যেমন ফাইলের নাম বা টাইপ, এবং ReplaceText প্রোসেসরটি FlowFile-এর কন্টেন্টের মধ্যে টেক্সট বা প্যাটার্ন পরিবর্তন করার জন্য ব্যবহৃত হয়। এগুলি NiFi ডেটা ফ্লো প্রক্রিয়াকরণে অত্যন্ত গুরুত্বপূর্ণ টুল যা ডেটার মেটাডেটা এবং কন্টেন্টে পরিবর্তন করতে সহায়ক।
অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ফ্লো ম্যানেজমেন্ট প্ল্যাটফর্ম যা ডেটার সংগ্রহ, প্রক্রিয়াকরণ, এবং ট্রান্সফরমেশন সহজ করে তোলে। NiFi ডেটাকে FlowFile নামক একটি কনটেইনারে ধারণ করে এবং এই FlowFile এর মাধ্যমে ডেটার হ্যান্ডলিং এবং প্রক্রিয়াকরণ করা হয়। FlowFile এর কন্টেন্ট (content), মেটাডেটা (metadata), এবং প্রোপার্টি (properties) ব্যবহার করে NiFi ডেটাকে বিভিন্ন প্রক্রিয়াকরণে পাঠাতে সক্ষম।
FlowFile Content হ্যান্ডলিং হল NiFi এর একটি গুরুত্বপূর্ণ দিক, কারণ এটি ডেটার মূল অংশ, যা প্রক্রিয়া এবং ট্রান্সফর্মেশন করতে ব্যবহৃত হয়। এখানে FlowFile Content কীভাবে হ্যান্ডেল করা হয় এবং এটি কিভাবে NiFi প্রসেসরগুলির মাধ্যমে প্রক্রিয়াকৃত হয় তা আলোচনা করা হবে।
FlowFile Content এর ধারণা
NiFi একটি FlowFile ধারণ করে যা দুটি প্রধান অংশ নিয়ে গঠিত:
- Content (কনটেন্ট): এটি FlowFile এর মূল ডেটা। উদাহরণস্বরূপ, যদি আপনি একটি JSON ফাইল বা XML ডকুমেন্ট প্রসেস করতে চান, তাহলে ওই ফাইলটি FlowFile এর কনটেন্ট অংশ হিসেবে সংরক্ষিত হয়।
- Attributes (অ্যাট্রিবিউট): এটি FlowFile এর মেটাডেটা, যেমন ফাইলের নাম, তারিখ, আকার, প্রকার ইত্যাদি। এই অ্যাট্রিবিউটগুলি FlowFile কে চিহ্নিত করার জন্য ব্যবহৃত হয় এবং ডেটা রুটিং, ফিল্টারিং বা প্রক্রিয়াকরণের জন্য সহায়ক।
FlowFile Content হ্যান্ডলিং এর প্রসেস
NiFi এ FlowFile Content হ্যান্ডলিং প্রক্রিয়া কিছু নির্দিষ্ট প্রসেসর এবং কনফিগারেশনের মাধ্যমে করা হয়। FlowFile এর কনটেন্টের সাথে কাজ করার জন্য NiFi এ বিভিন্ন ধরনের প্রসেসর ব্যবহৃত হয়, যেমন ডেটা পড়া, লেখা, পরিবর্তন বা ম্যানিপুলেট করা।
১. FlowFile Content পড়া
FlowFile Content পড়ার জন্য NiFi অনেক প্রসেসর সরবরাহ করে। একটি সাধারণ উদাহরণ হলো GetFile প্রসেসর, যা একটি ফাইল সিস্টেম থেকে ফাইল নিয়ে আসে এবং তা FlowFile এর কনটেন্ট হিসেবে রাখে।
1. Add the "GetFile" processor to the NiFi canvas.
2. Set the directory path where the files are stored.
3. The processor will fetch files and create FlowFiles, where the file content will be stored as the FlowFile content.
২. FlowFile Content লেখা
FlowFile Content লেখার জন্য PutFile, PutDatabaseRecord, বা PutHTTP মতো প্রসেসর ব্যবহার করা হয়। এগুলি FlowFile এর কনটেন্ট একটি নির্দিষ্ট গন্তব্যে পাঠিয়ে দেয়।
1. Add the "PutFile" processor to the NiFi canvas.
2. Set the directory path where the FlowFile content should be written.
3. The processor will write the FlowFile content to the specified directory.
৩. FlowFile Content পরিবর্তন করা
UpdateAttribute বা ExecuteScript প্রসেসর ব্যবহার করে FlowFile এর কনটেন্ট পরিবর্তন করা যেতে পারে। উদাহরণস্বরূপ, আপনি JSON বা XML কনটেন্ট পরিবর্তন করতে পারেন এবং FlowFile এর কনটেন্টকে নতুনভাবে তৈরি করতে পারেন।
1. Add the "ExecuteScript" processor.
2. Write a script (e.g., Groovy, Python) that modifies the content of FlowFile.
3. The processor will modify the FlowFile content based on the script logic.
৪. FlowFile Content এর সাথে কাজ করা (Process Content)
ConvertRecord, ExtractText, RouteOnAttribute এবং অন্যান্য প্রসেসর ব্যবহার করে FlowFile এর কনটেন্ট থেকে নির্দিষ্ট তথ্য আহরণ করা, ফিল্টার করা বা রূপান্তর করা সম্ভব। উদাহরণস্বরূপ, আপনি ExtractText প্রসেসরের মাধ্যমে একটি ফাইলের কনটেন্ট থেকে নির্দিষ্ট তথ্য (যেমন নাম, তারিখ) বের করতে পারেন।
1. Add the "ExtractText" processor.
2. Define a regular expression to extract specific content from the FlowFile.
3. The processor will extract the desired content and create a new attribute with the extracted value.
FlowFile Content এর সাথে কাজ করার জন্য গুরুত্বপূর্ণ প্রসেসর
- GetFile: ফাইল সিস্টেম থেকে ফাইল পড়ে এবং FlowFile এর কনটেন্টে রাখে।
- PutFile: FlowFile এর কনটেন্ট একটি নির্দিষ্ট ডিরেক্টরিতে লিখে।
- ExecuteScript: স্ক্রিপ্ট ব্যবহার করে FlowFile কনটেন্ট পরিবর্তন বা প্রক্রিয়াকরণ।
- UpdateAttribute: FlowFile এর অ্যাট্রিবিউট বা কনটেন্ট আপডেট করা।
- ConvertRecord: ডেটার রূপান্তর (যেমন CSV থেকে JSON) করা।
- ExtractText: FlowFile এর কনটেন্ট থেকে নির্দিষ্ট তথ্য বা ভ্যালু বের করা।
- RouteOnAttribute: FlowFile এর অ্যাট্রিবিউটের ভিত্তিতে ডেটার রুটিং করা।
FlowFile Content হ্যান্ডলিং এর সুবিধা
- ফাইল প্রক্রিয়াকরণ: NiFi এর FlowFile Content হ্যান্ডলিং ফাইল সিস্টেম, ডেটাবেস, বা ইন্টারনেট থেকে ডেটা সংগ্রহ এবং প্রক্রিয়াকরণের জন্য অত্যন্ত কার্যকরী।
- রিয়েল-টাইম ডেটা প্রসেসিং: FlowFile এর মাধ্যমে রিয়েল-টাইম ডেটা প্রসেসিং সম্ভব, যেমন সেন্সর ডেটা বা লগ ফাইলের দ্রুত প্রক্রিয়াকরণ।
- ডেটার রূপান্তর ও ফিল্টারিং: NiFi FlowFile কনটেন্টের রূপান্তর এবং ফিল্টারিংয়ের মাধ্যমে ডেটাকে আরও কার্যকরীভাবে ব্যবহারের উপযোগী করে তোলে।
- স্কেলেবিলিটি: FlowFile Content হ্যান্ডলিং অনেক বেশি স্কেলেবল, যেখানে একাধিক নোড ব্যবহার করে বৃহৎ পরিসরে ডেটা প্রক্রিয়াকরণ করা সম্ভব।
- ডেটা ম্যানিপুলেশন: বিভিন্ন প্রসেসর এবং স্ক্রিপ্ট ব্যবহার করে ডেটার গভীর ম্যানিপুলেশন সম্ভব, যা বিশেষত জটিল ডেটা প্রক্রিয়াকরণের ক্ষেত্রে গুরুত্বপূর্ণ।
NiFi এর FlowFile Content হ্যান্ডলিং একটি অত্যন্ত গুরুত্বপূর্ণ দিক যা ডেটার সঠিক প্রক্রিয়াকরণ এবং ট্রান্সফরমেশন নিশ্চিত করে। এটি ব্যবহারকারীদের দ্রুত এবং কার্যকরীভাবে ডেটা সংগ্রহ, প্রক্রিয়া এবং পাঠানোর সুযোগ দেয়, বিশেষত বৃহৎ পরিসরে ডেটা ম্যানেজমেন্টের ক্ষেত্রে।
অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ফ্লো ব্যবস্থাপনা প্ল্যাটফর্ম যা ডেটা সংগ্রহ, প্রক্রিয়াকরণ এবং বিতরণ করতে ব্যবহৃত হয়। NiFi এর অন্যতম গুরুত্বপূর্ণ বৈশিষ্ট্য হল কনটেন্ট-বেসড রাউটিং (Content-based Routing) এবং ফিল্টারিং (Filtering), যা ডেটা ফ্লো পরিচালনা এবং কাস্টম লজিক অনুযায়ী ডেটার ট্রান্সফরমেশন এবং বিতরণে সহায়ক। কনটেন্ট-বেসড রাউটিং এবং ফিল্টারিং ব্যবস্থাপনা মেথডগুলি একটি ডেটা ফ্লো ডিজাইনকে আরও নমনীয় এবং কার্যকরী করে তোলে।
কনটেন্ট-বেসড রাউটিং (Content-based Routing)
কনটেন্ট-বেসড রাউটিং হল একটি পদ্ধতি যেখানে ডেটার কন্টেন্ট (যেমন, ডেটার বিষয়বস্তু বা মান) এর ভিত্তিতে ডেটাকে বিভিন্ন রুটে পরিচালনা করা হয়। এটি বিশেষত ব্যবহারী এবং অ্যাপ্লিকেশনের চাহিদা অনুযায়ী ডেটা সেগমেন্টেশন, ট্রান্সফরমেশন, বা বিতরণ করতে ব্যবহৃত হয়। NiFi তে, কনটেন্ট-বেসড রাউটিং করার জন্য বিভিন্ন প্রসেসর উপলব্ধ রয়েছে।
কনটেন্ট-বেসড রাউটিং এর প্রক্রিয়া:
- ডেটার বিশ্লেষণ: প্রথমে, NiFi ডেটার কন্টেন্ট (যেমন JSON, XML বা অন্যান্য ফরম্যাট) বিশ্লেষণ করে।
- রাউটিং শর্তাবলী: ডেটার কন্টেন্ট বা অ্যাট্রিবিউটের উপর নির্ভর করে বিভিন্ন রাউটিং শর্ত তৈরি করা হয়। উদাহরণস্বরূপ, JSON ডেটার কোনো নির্দিষ্ট ফিল্ডের মানের ভিত্তিতে ডেটা এক বা একাধিক রুটে পাঠানো যেতে পারে।
- রাউটিং এবং প্রক্রিয়া: এরপর, নির্দিষ্ট শর্তের ভিত্তিতে NiFi ডেটাকে বিভিন্ন প্রসেসরের মাধ্যমে রুট করে। এই রুটিং প্রক্রিয়াটি গ্রাফিক্যাল ইন্টারফেসে সহজেই কনফিগার করা যায়।
কনটেন্ট-বেসড রাউটিং এর উদাহরণ:
ধরা যাক, আপনার কাছে JSON ডেটা রয়েছে এবং আপনি নির্দিষ্ট একটি ফিল্ডের মানের উপর ভিত্তি করে ডেটা দুটি আলাদা রুটে পাঠাতে চান। উদাহরণস্বরূপ, একটি status ফিল্ডে যদি "success" থাকে, তবে ডেটা একটি নির্দিষ্ট ডেস্টিনেশনে যাবে, এবং যদি "failure" থাকে, তবে তা অন্য ডেস্টিনেশনে যাবে।
এই রাউটিংটি NiFi এর RouteOnAttribute প্রসেসর ব্যবহার করে করা যেতে পারে, যেখানে আপনি একটি এক্সপ্রেশন লিখে কন্টেন্টের ভিত্তিতে ডেটাকে আলাদা রুটে পাঠাতে পারেন।
ফিল্টারিং (Filtering)
ফিল্টারিং হল ডেটার কিছু অংশ বাদ দেওয়া বা নির্বাচিত করা। NiFi তে, ফিল্টারিংয়ের মাধ্যমে আপনি ডেটার নির্দিষ্ট অংশ নির্বাচন করতে পারেন যা আপনার প্রয়োজনের জন্য প্রাসঙ্গিক। এটি বিশেষভাবে ডেটা বিশ্লেষণ এবং কাস্টম প্রসেসিংয়ের জন্য গুরুত্বপূর্ণ, যেখানে কেবলমাত্র প্রয়োজনীয় ডেটা প্রক্রিয়া করা হয় এবং অবাঞ্ছিত ডেটা ফিল্টার করা হয়।
ফিল্টারিং এর প্রক্রিয়া:
- ডেটা বিশ্লেষণ: ডেটার অ্যাট্রিবিউট এবং কন্টেন্ট বিশ্লেষণ করতে হবে। উদাহরণস্বরূপ, একটি JSON ফাইলের একটি নির্দিষ্ট ফিল্ডের মানের উপর ভিত্তি করে ডেটা ফিল্টার করা যেতে পারে।
- ফিল্টারিং শর্তাবলী তৈরি করা: শর্তাবলী নির্ধারণ করুন যা অনুসারে ডেটাকে ফিল্টার করা হবে। উদাহরণস্বরূপ, একটি
statusফিল্ড যদি "success" হয়, তবে ডেটাটি ফিল্টার হবে, অন্যথায় বাদ পড়বে। - ফিল্টারিং প্রসেস: NiFi এর
RouteOnAttributeবাEvaluateJsonPathপ্রসেসর ব্যবহার করে নির্দিষ্ট শর্ত অনুযায়ী ডেটা ফিল্টার করা যেতে পারে।
ফিল্টারিং এর উদাহরণ:
ধরা যাক, আপনি একটি JSON ফাইল থেকে এমন রেকর্ডগুলি আলাদা করতে চান যেখানে status ফিল্ডের মান "active"। এই কাজটি NiFi এর RouteOnAttribute প্রসেসর ব্যবহার করে করা যাবে, যেখানে শর্ত থাকবে:
status == "active"
এটি ফিল্টার করবে এবং শুধুমাত্র status "active" যেগুলি তাদের পাঠাবে।
NiFi তে কনটেন্ট-বেসড রাউটিং এবং ফিল্টারিংয়ের জন্য গুরুত্বপূর্ণ প্রসেসরসমূহ
১. RouteOnAttribute
RouteOnAttribute প্রসেসর ব্যবহার করে আপনি একটি বা একাধিক ডেটা অ্যাট্রিবিউটের ভিত্তিতে রাউটিং এবং ফিল্টারিং করতে পারেন। এটি সবচেয়ে বেশি ব্যবহৃত প্রসেসরগুলোর একটি, যা অ্যাট্রিবিউটের মানের উপর ভিত্তি করে ডেটাকে আলাদা রুটে প্রেরণ করতে সহায়ক।
২. EvaluateJsonPath
এই প্রসেসরটি JSON ডেটার পাথ বিশ্লেষণ করতে ব্যবহৃত হয় এবং নির্দিষ্ট পাথ থেকে মান নির্বাচন করতে সাহায্য করে। এটি ফিল্টারিং এবং কনটেন্ট-ভিত্তিক রাউটিংয়ের জন্য উপযুক্ত।
৩. ExtractText
ExtractText প্রসেসরটি সাধারণত টেক্সট ফাইল বা অন্যান্য ডেটা থেকে নির্দিষ্ট তথ্য বের করতে ব্যবহৃত হয়। এটি ফিল্টারিং এবং রাউটিং কনফিগারেশনের জন্য বেশ কার্যকরী।
৪. UpdateAttribute
UpdateAttribute প্রসেসর ডেটার অ্যাট্রিবিউট পরিবর্তন করতে ব্যবহৃত হয়। এটি রাউটিং বা ফিল্টারিংয়ের সময় ডেটার অ্যাট্রিবিউট আপডেট করতে সাহায্য করে।
কনটেন্ট-বেসড রাউটিং এবং ফিল্টারিং এর সুবিধাসমূহ
- ডেটা নির্দিষ্টতা: কনটেন্ট-বেসড রাউটিং এবং ফিল্টারিং আপনাকে নির্দিষ্ট ধরনের ডেটা চয়ন এবং প্রক্রিয়া করতে সক্ষম করে।
- কার্যকারিতা: এটি ডেটা ফ্লো তে কার্যকারিতা বাড়ায় কারণ আপনি অপ্রয়োজনীয় ডেটা বাদ দিয়ে শুধুমাত্র প্রাসঙ্গিক ডেটা প্রক্রিয়া করতে পারেন।
- স্কেলেবিলিটি: এই প্রক্রিয়াগুলি বড় পরিসরে ডেটা ফ্লো ম্যানেজমেন্টে সহায়ক, যেখানে আপনি ডেটা সোর্স বা টার্গেট ডেস্টিনেশন অনুযায়ী কাস্টম রাউটিং বা ফিল্টারিং করতে পারেন।
সারাংশ
অ্যাপাচি নিফাই (Apache NiFi) কনটেন্ট-বেসড রাউটিং এবং ফিল্টারিং এর মাধ্যমে ডেটা ফ্লোতে অত্যন্ত নমনীয়তা প্রদান করে। ডেটার কন্টেন্ট বা অ্যাট্রিবিউটের ভিত্তিতে রাউটিং এবং ফিল্টারিং নিশ্চিত করে যে আপনি কেবলমাত্র প্রাসঙ্গিক ডেটা প্রক্রিয়া করবেন এবং তা যথাযথ গন্তব্যে পাঠাবেন। NiFi এর গ্রাফিক্যাল ইউজার ইন্টারফেসের মাধ্যমে এই প্রক্রিয়াগুলি সহজেই কনফিগার করা যায়, যা ডেটা ইন্টিগ্রেশন এবং প্রক্রিয়াকরণকে আরও সহজ এবং কার্যকরী করে তোলে।
Read more